"""
@version:python3
@author:ll
@file:04-QWidget-事件转发.py
@time:2022/2/10 0:31
"""
# 0、导入需要的包和模块
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def mousePressEvent(self, QMouseEvent):
        print("顶层窗口被按下")

class Mid_Window(QWidget):
    def mousePressEvent(self, QMouseEvent):
        print("中间窗口被按下")

class Label(QLabel):
    def mousePressEvent(self, QMouseEvent):
        print("标签被按下")
        # QMouseEvent.accept() # 标识已经处理了这个事件，不需要再往上传递了
        # print(QMouseEvent.isAccepted())
        QMouseEvent.ignore()


# 1、创建一个应用程序对象
app = QApplication(sys.argv)

# 2、控件操作
# 创建控件、设置控件、事件和信号的处理
# 2.1 创建控件
window = Window()
# 2.2 设置控件
window.setWindowTitle("事件转发的学习")
window.resize(500,500)

mid_window = Mid_Window(window)
mid_window.resize(300,300)
mid_window.setAttribute(Qt.WA_StyledBackground,True)
mid_window.setStyleSheet("background-color:yellow;")


label = Label(mid_window)
# label = QLabel(mid_window)
label.setText("社会顺哥")
label.move(100,100)
label.setStyleSheet("background-color:red;")

btn = QPushButton(mid_window) # QPushButton在内部已经进行了点击的相关处理，所以不会进行事件转发，但是QLabel没有，所以会向父控件转发消息
btn.setText("按钮")
btn.move(50,50)


# 2.3 展示控件
window.show()

# 3、应用程序的执行，进入到消息循环
sys.exit(app.exec_())